import { IMiddleware, NextFunction } from '@midwayjs/core';
import { Middleware } from '@midwayjs/core';
import { Context } from '@midwayjs/koa';

/**
 * 全局日志中间件
 */
@Middleware()
export class GlobalLogMiddleware implements IMiddleware<Context, NextFunction> {
  resolve() {
    return async (ctx: Context, next: NextFunction) => {
      // 打印请求开始信息
      ctx.logger.info(`[Global] Request start --------------------`);

      // 获取请求路径
      const path = ctx.path;
      
      // 判断是否为project或todo模块
      if (path.startsWith('/app/project') || path.startsWith('/app/todo')) {
        // 打印请求参数
        ctx.logger.info(`${ctx.method} 请求参数:`, ctx.request.body);
      }

      // 执行下一个中间件
      await next();

      // 打印请求结束信息
      ctx.logger.info(`[Global] Request end --------------------`);
    };
  }

  static getName(): string {
    return 'globalLog';
  }
} 